package com.jsmtr.rms.utils.db;

import java.util.ArrayList;
import java.util.HashMap;


/**
 * 行元素
 *
 * @author 陈宇翔
 * @version 1.0
 */
public class DbRow extends HashMap<String, String> {
    private static final long serialVersionUID = -8940196742313994740L;
    private ArrayList<String> colNameList = new ArrayList<String>();//列名
    private ArrayList<String> tempList = new ArrayList<String>();//临时数据源


    //---------------------------------------------初始化

    /**
     * 初始化行元素
     */
    public DbRow() {
    }

    /**
     * 初始化行列名
     */
    protected void addColName(String colName) {
        this.colNameList.add(colName);
    }

    /**
     * 在指定索引位置插入行列名
     */
    protected void addColName(int index, String colName) {
        this.colNameList.add(index, colName);
    }

    /**
     * 初始化行列名
     */
    @SuppressWarnings("unchecked")
    protected void setColName(ArrayList<String> e) {
        colNameList = (ArrayList<String>) e.clone();
    }

    /**
     * 恢复
     */
    protected void flex() {
        for (int i = 0; i < colNameList.size(); i++) {
            this.put(colNameList.get(i).toString(), tempList.get(i).toString());
        }
    }

    //---------------------------------------------统计

    /**
     * 列长度统计
     */
    public int size() {
        return colNameList.size();
    }

    //---------------------------------------------get


    ArrayList<String> getColNameList() {
        return colNameList;
    }


    ArrayList<String> getTempList() {
        return tempList;
    }


    /**
     * 根据索引得到数据
     */
    public String get(int index) {
        if (index <= colNameList.size()) {
            return super.get(getColName(index)).toString();
        } else {
            System.out.println("DbRow.get(int).err:指定索引：" + index + "超出列最大索引位置:" + colNameList.size());
        }
        return "";
    }

    /**
     * 通过列名得到数据
     */
    public String get(String ColumnName) {
        //ColumnName=ColumnName.toUpperCase();
        if (getColIndex(ColumnName) != -1) {
            return super.get(ColumnName);
        } else {
            System.out.println("DbRow.get(String).err:无当前列名:" + ColumnName);
        }
        return "";
    }


    /**
     * 得到列名
     */
    protected ArrayList<String> getColumnName() {
        return colNameList;
    }

    /**
     * 通过列名获取索引
     */
    protected int getColIndex(String ColumnName) {
        for (int i = 0; i < colNameList.size(); i++) {
            if (colNameList.get(i).toString().equals(ColumnName)) {
                return i;
            }
        }
        return -1;
    }

    /**
     * 通过索引获得列名
     */
    protected String getColName(int index) {
        if (index <= colNameList.size()) {
            return colNameList.get(index);
        }
        return "";
    }


    //---------------------------------------------set

    /**
     * 修改在指定列名位置的数据
     */
    public boolean set(String ColumnName, String Value) {
//		if(getColIndex(ColumnName.toUpperCase())!=-1){
//			super.put(ColumnName.toUpperCase(), Value);
//			return true;
//		}else{
//			System.out.println("DbRow.set(String,String).err:无当前列名:"+ColumnName);
//		}

        if (getColIndex(ColumnName) != -1) {
            super.put(ColumnName, Value);
            return true;
        } else {
            System.out.println("DbRow.set(String,String).err:无当前列名:" + ColumnName);
        }
        return false;
    }


    /**
     * 修改在指定索引位置行列名
     */
    protected void setColName(int index, String colName) {
        this.colNameList.set(index, colName);
    }


    /**
     * 修改在指定索引位置的数据
     */
    public boolean set(int index, String Value) {
        if (index <= colNameList.size()) {
            super.put(getColName(index), Value);
            return true;
        } else {
            System.out.println("DbRow.set(int,String).err:指定索引：" + index + "超出列最大索引位置:" + colNameList.size());
        }
        return false;
    }


    //---------------------------------------------add

    /**
     * 在行指定索引位置后插入数据
     */
    public boolean add(int index, String ColName, String Value) {
        if (index <= colNameList.size()) {
            colNameList.add(index, ColName);
            super.put(ColName, Value);
            return true;
        } else {
            System.out.println("DbRow.add(int,String,String).err指定索引：" + index + "超出列最大索引位置:" + colNameList.size());
        }
        return false;
    }

    /**
     * 在行最后插入数据依次加入数据
     */
    public boolean add(String Value) {
        try {
            tempList.add(Value);
            return true;
        } catch (Exception e) {
            System.out.println("DbRow.add(String).err：" + e);
        }
        return false;
    }


    /**
     * 在行最后插入指定列名的数据
     */
    public boolean add(String ColName, String Value) {
        try {
            colNameList.add(ColName);
            super.put(ColName, Value);
            return true;
        } catch (Exception e) {
            System.out.println("DbRow.add(String,String).err：" + e);
        }
        return false;
    }

    /**
     * remove()不提供
     */
    public String remove(Object key) {
        return null;
    }


}
